//
// Created by Ctzzz on 2024/4/24.
//

#include <stdio.h>
#include <string.h>

int main() {
    // 以读写的方式创建并打开一个文件, 返回一个文件指针
    FILE *p = fopen("./123.txt", "w+");
    // 定义一个字符数组
    char s1[10], s2[] = "abc";
    // 变量offset用于记录文件偏移量
    long offset;

    // 将s2写入文件
    fputs(s2, p);
    // 将文件位置设置在起始位置
    rewind(p);
    // 从文件读取数据到s1
    fgets(s1, sizeof(s1), p);
    printf("s1 = %s\n", s1);
    // 将s1写入标准输出
    fputs(s1, stdout);
    // 换行
    putchar('\n');
    // 获取当前的文件位置
    offset = ftell(p);
    // 将s1设置为"bcd"
    strcpy(s1, "bcd");
    // 将s1写入文件，追加到文件末尾
    fputs(s1, p);
    // 将文件位置设置为起始位置
    fseek(p, 0, SEEK_SET);
    // 对于文本文件，一定要选用参数SEEK_SET
    // 从文件读取数据到s1
    fgets(s1, sizeof(s1), p);
    // 将s1写入标准输出
    fputs(s1, stdout);
    // 换行
    putchar('\n');
    // 将文件位置设置为offset所指位置
    fseek(p, offset, SEEK_SET);
    // 从文件读取数据到s1
    fgets(s1, sizeof(s1), p);
    // 将s1写入标准输出
    fputs(s1, stdout);
    // 换行
    putchar('\n');


    // 关闭文件
    fclose(p);

    return 0;
}
